Skip to content

test(e2e): migrate OpenClaw skill CLI scenario - #5354

Merged
cv merged 4 commits into
mainfrom
codex/5098-openclaw-skill-cli-e2e
Jun 13, 2026
Merged

test(e2e): migrate OpenClaw skill CLI scenario#5354
cv merged 4 commits into
mainfrom
codex/5098-openclaw-skill-cli-e2e

Conversation

@cv

@cv cv commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Migrates test/e2e/test-openclaw-skill-cli-e2e.sh into a focused live Vitest scenario while preserving the real install.sh/OpenShell sandbox boundary and direct in-sandbox OpenClaw skills CLI checks. Wires the migrated scenario into manual E2E Vitest dispatch as openclaw-skill-cli-vitest.

Related Issue

Refs #5098

Changes

  • Added test/e2e-scenario/live/openclaw-skill-cli.test.ts for the install/list/info/check workspace skill roundtrip.
  • Registered openclaw-skill-cli in the free-standing Vitest scenario inventory.
  • Added the openclaw-skill-cli-vitest workflow job and PR report fan-in.
  • Extended workflow selector contract coverage and raised the inventory matrix-loop timeout to cover the expanded free-standing set.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Verification

Ran and passed:

  • npx @biomejs/biome lint test/e2e-scenario/live/openclaw-skill-cli.test.ts test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • npx vitest run --project e2e-vitest-support test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • NEMOCLAW_RUN_E2E_SCENARIOS=1 npx vitest run --project e2e-scenarios-live test/e2e-scenario/live/openclaw-skill-cli.test.ts --reporter=default (skips at missing NVIDIA_API_KEY gate; no sandbox mutation)
  • npm run build:cli && npm run typecheck:cli
  • cd nemoclaw && npm install --ignore-scripts && npm run build

Attempted:

  • npx prek run --all-files after root + plugin install/build; static hooks and plugin tests passed, but the CLI test hook timed out in unrelated 5s tests: test/cli/snapshot-shields.test.ts and src/lib/onboard/web-search-flow.test.ts.

  • npx prek run --all-files passes

  • npm test passes

  • Tests added or updated for new or changed behavior

  • No secrets, API keys, or credentials committed

  • Docs updated for user-facing behavior changes

  • npm run docs builds without warnings (doc changes only)

  • Doc pages follow the style guide (doc changes only)

  • New doc pages include SPDX header and frontmatter (new pages only)


Signed-off-by: Carlos Villela cvillela@nvidia.com

Summary by CodeRabbit

  • Tests

    • Added a Vitest-based end-to-end scenario for the OpenClaw skill CLI: installs a skill into a sandbox, verifies files and CLI outputs (list/info/check), and records scenario artifacts.
    • Tests support conditional execution and will skip when Docker or external rate limits prevent a live run.
  • Chores

    • New CI workflow job for the Vitest E2E scenario, uploads test artifacts, and is included in PR result reporting.
  • Infrastructure

    • CI now attempts Docker auth with graceful fallback to anonymous pulls and always performs cleanup.

Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@cv cv self-assigned this Jun 12, 2026
@copy-pr-bot

copy-pr-bot Bot commented Jun 12, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d3bb4e6a-b083-43bb-b427-72014d59e3bf

📥 Commits

Reviewing files that changed from the base of the PR and between 73edbed and ec2f270.

📒 Files selected for processing (2)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • .github/workflows/e2e-vitest-scenarios.yaml

📝 Walkthrough

Walkthrough

Adds a free-standing Vitest job openclaw-skill-cli-vitest, implements a live E2E Vitest scenario test for the OpenClaw skills CLI, wires the job into the e2e workflow and PR reporting, and extends dispatch-selector tests to cover the new job.

Changes

OpenClaw skill CLI E2E Vitest job

Layer / File(s) Summary
Live skill CLI scenario test
test/e2e-scenario/live/openclaw-skill-cli.test.ts
Implements the openclaw-skill-cli live E2E test with shell/environment helpers, sandbox provisioning and cleanup, fixture generation, skill installation and verification, JSON output validation for list/info/check commands, artifact recording, and conditional skip logic for Docker unavailability and rate-limiting detection.
CI job definition and PR reporting
.github/workflows/e2e-vitest-scenarios.yaml
Defines the openclaw-skill-cli-vitest job with E2E env variables, Docker Hub authentication with anonymous fallback and retry, Node/CLI build and setup, test execution using secrets.NVIDIA_API_KEY, artifact upload, and guaranteed Docker logout cleanup; adds the job to report-to-pr.needs.
Workflow dispatch selector validation
test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
Adds dispatch-selector assertions to verify scenarios: "openclaw-skill-cli" and jobs: "openclaw-skill-cli-vitest" route to the free-standing job, mark them valid, do not trigger live scenario runs, and produce empty registry scenarios.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#5370: Derives free-standing selectors from workflow YAML rather than an env registry, exercising the same dispatch-selector machinery the new job depends on.
  • NVIDIA/NemoClaw#5243: Related changes to free-standing job selector plumbing and validation used by the new openclaw-skill-cli-vitest job.
  • NVIDIA/NemoClaw#5234: Updates scenario-advisor/tests for free-standing live tests, which intersect with dispatch and wiring changes here.

Suggested labels

area: e2e, area: ci

Suggested reviewers

  • prekshivyas

Poem

🐰 I hopped a test into the sandbox bright,
Commands and fixtures ran through day and night,
Docker danced with retries, artifacts in tow,
PR reports now show the job's proud glow,
A tiny rabbit hops — the workflows grow!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: migrating the OpenClaw skill CLI E2E test from a shell script to a Vitest scenario, which is the core objective reflected in the file changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/5098-openclaw-skill-cli-e2e

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: None
Optional E2E: None

Workflow run

Full advisor summary

E2E Recommendation Advisor

Failed: Could not parse JSON from advisor output; see /home/runner/work/NemoClaw/NemoClaw/artifacts/e2e-advisor/e2e-advisor-raw-output.txt

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Recommendation

Required Vitest E2E scenarios: None
Optional Vitest E2E scenarios: None

Workflow run

Full Vitest E2E advisor summary

Vitest E2E Scenario Advisor

Failed: Could not parse JSON from advisor output; see /home/runner/work/NemoClaw/NemoClaw/artifacts/e2e-advisor/e2e-scenario-advisor-raw-output.txt

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor

Findings: 0 needs attention, 1 worth checking, 0 nice ideas
Top item: PR review advisor unavailable

Review findings

🛠️ Needs attention

  • None.

🔎 Worth checking

  • PR review advisor unavailable: The automated advisor could not complete: Could not parse JSON from PR review advisor output; see /home/runner/work/NemoClaw/NemoClaw/artifacts/pr-review-advisor/pr-review-advisor-raw-output.txt
    • Recommendation: Re-run the PR Review Advisor or perform a manual review.
    • Evidence: Could not parse JSON from PR review advisor output; see /home/runner/work/NemoClaw/NemoClaw/artifacts/pr-review-advisor/pr-review-advisor-raw-output.txt

🌱 Nice ideas

  • None.
Consider writing more tests for
  • **Runtime validation** — Add or identify targeted runtime/integration validation for the changed behavior; do not report external E2E job pass/fail here.. Runtime/sandbox/infrastructure paths need behavioral runtime validation: .github/workflows/e2e-vitest-scenarios.yaml.

Workflow run details

This is an automated advisory review. A human maintainer must make the final merge decision.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27436103532
Workflow ref: codex/5098-openclaw-skill-cli-e2e
Requested scenarios: (default — all supported)
Requested jobs: openclaw-skill-cli-vitest
Summary: 1 passed, 1 failed, 22 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-skill-cli-vitest ❌ failure
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

Failed jobs: openclaw-skill-cli-vitest. Check run artifacts for logs.

Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27437481427
Workflow ref: codex/5098-openclaw-skill-cli-e2e
Requested scenarios: (default — all supported)
Requested jobs: openclaw-skill-cli-vitest
Summary: 2 passed, 0 failed, 22 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-skill-cli-vitest ✅ success
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

@cv
cv marked this pull request as ready for review June 12, 2026 21:03

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tools/e2e-scenarios/free-standing-jobs.env`:
- Around line 3-5: The CI summary is inaccurate because
tools/e2e-scenarios/free-standing-jobs.env still lists
credential-migration-vitest and gateway-guard-recovery in the allowed_jobs
variable; update allowed_jobs (or the PR summary) to reflect the actual
removals, and ensure free_standing_scenarios_csv and
free_standing_scenario_jobs_csv are consistent with allowed_jobs (check entries
like credential-migration and gateway-guard-recovery). Separately, diagnose the
regex-validation CI failure by reproducing the validator using the exact CI
validator error output (not this env) — inspect
tools/e2e-scenarios/workflow-boundary.mts for the MODULE_NOT_FOUND: yaml and run
the CI validator locally with its error log to pinpoint the failing regex
line/revision.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 91760fcc-8e02-4f6f-bb1c-3dc7b18f3c02

📥 Commits

Reviewing files that changed from the base of the PR and between 0e30bff and c1c2983.

📒 Files selected for processing (4)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/openclaw-skill-cli.test.ts
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • tools/e2e-scenarios/free-standing-jobs.env

Comment thread tools/e2e-scenarios/free-standing-jobs.env Outdated
@cv cv added the v0.0.65 label Jun 13, 2026
@wscurran wscurran added chore Build, CI, dependency, or tooling maintenance integration: openclaw OpenClaw integration behavior labels Jun 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance integration: openclaw OpenClaw integration behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants